package cn.fl.finance.service;

import cmm.mid.core.framework.dto.DataResultDTO;
import cmm.mid.core.framework.page.DataResultVO;
import cn.fl.finance.vo.FinPayDtlGridVO;

import java.util.List;
import java.util.Map;

/**
 * 借款申请服务
 * 作者:hongyanbo
 * 时间:2018/9/28
 */
public interface IFinLoanApplyService {
    /**
     * 保存或修改借款明细
     * @param loanDtlJsonList jsonList
     * @param fileParams 
     * @return loanInfoId
     */
    Map<String,Long> saveOrUpdateLoanDtl(String loanDtlJsonList, Long loanInfoId,Long applyInfoId,String newFlag, String fileParams);

    List<FinPayDtlGridVO> selectPayDtlGridList(Long payApplyId, String newFlag);

    /**
     * 绑定付款明细的账号信息
     * @param payDtlId
     * @param bankAccId
     */
    DataResultVO bindBankAcc(Long payDtlId, Long bankAccId);

    /**
     * 暂存或保存提交流程
     * @param action 0:暂存 1：保存并发起流程  2：保存不发起流程
     * @param payApplyId
     * @param confirm
     */
    DataResultDTO save(String action, Long payApplyId, int confirm);

    /**
     * 发起借款流程
     * @param payApplyId
     */
    DataResultDTO startFlow(Long payApplyId);

    /**
     * 更新paydtl的本次申请金额
     * @param json
     */
    void updatePayDtlList(String json);

    /**
     * 保存和暂存 之前的提示信息。
     * 校验使用金额总额，与申请金额的大小关系，分别给出不同提示
     * @param payApplyId
     * @return
     */
    DataResultDTO saveConfirm(Long payApplyId);

    /**
     * 查询出is_del=2的 申请ID
     * @param loanInfoId
     * @return
     */
    Long selectTempApplyIdByLoanInfoId(String loanInfoId);
}
